using System;
using System.Collections;

namespace CaseStudy
{
	public class Vendor
	{
		private string name;
		private PartsHashtable parts;
		private PartsArray partsArray;

		public string Name
		{
			get {return name;}
			set {name=value;}
		}

		public int PartCount
		{
			get {return parts.Count;}
		}

		public PartsArray Parts
		{
			get {return partsArray;}
		}

		public void Clear()
		{
			parts.Clear();
			partsArray.Clear();
		}

		public void Add(Part p)
		{
			if (p==null)
			{
				throw(new InvalidPartException());
			}

			if (p.Number=="")
			{
				throw(new UnassignedPartException());
			}

			if (parts.Contains(p.Number))
			{
				throw(new DuplicatePartException());
			}

			parts.Add(p.Number, p);
			partsArray.Add(p);
		}

		public Vendor()
		{
			parts=new PartsHashtable();
			partsArray=new PartsArray();
			name="";
		}

		public bool Contains(Part p)
		{
			return parts.Contains(p.Number);
		}

		public bool Contains(string partNumber)
		{
			foreach (DictionaryEntry item in parts)
			{
				if (partNumber==((Part)item.Value).Number)
				{
					return true;
				}
			}
			return false;
		}
	}
}
